home *** CD-ROM | disk | FTP | other *** search
- /* sencal.f -- translated by f2c (version of 3 February 1990 3:36:42).
- You must link the resulting object file with the libraries:
- -lF77 -lI77 -lm -lc (in that order)
- */
-
- #include "f2c.h"
-
- /* Common Block Declarations */
-
- struct {
- integer ielmnt, isbckt, nsbckt, iunsat, nunsat, itemps, numtem, isens,
- nsens, ifour, nfour, ifield, icode, idelim, icolum, insize,
- junode, lsbkpt, numbkp, iorder, jmnode, iur, iuc, ilc, ilr,
- numoff, isr, nmoffc, iseq, iseq1, neqn, nodevs, ndiag, iswap,
- iequa, macins, lvnim1, lx0, lvn, lynl, lyu, lyl, lx1, lx2, lx3,
- lx4, lx5, lx6, lx7, ld0, ld1, ltd, imynl, imvn, lcvn, nsnod,
- nsmat, nsval, icnod, icmat, icval, loutpt, lpol, lzer, irswpf,
- irswpr, icswpf, icswpr, irpt, jcpt, irowno, jcolno, nttbr, nttar,
- lvntmp;
- } tabinf_;
-
- #define tabinf_1 tabinf_
-
- struct {
- integer locate[50], jelcnt[50], nunods, ncnods, numnod, nstop, nut, nlt,
- nxtrm, ndist, ntlin, ibr, numvs, numalt, numcyc;
- } cirdat_;
-
- #define cirdat_1 cirdat_
-
- struct {
- doublereal omega, time, delta, delold[7], ag[7], vt, xni, egfet, xmu,
- sfactr;
- integer mode, modedc, icalc, initf, method, iord, maxord, noncon, iterno,
- itemno, nosolv, modac, ipiv, ivmflg, ipostp, iscrch, iofile;
- } status_;
-
- #define status_1 status_
-
- struct {
- doublereal atime, aprog[3], adate, atitle[10], defl, defw, defad, defas,
- rstats[50];
- integer iwidth, lwidth, nopage;
- } miscel_;
-
- #define miscel_1 miscel_
-
- struct {
- integer iprnta, iprntl, iprntm, iprntn, iprnto, limtim, limpts, lvlcod,
- lvltim, itl1, itl2, itl3, itl4, itl5, itl6, igoof, nogo, keof;
- } flags_;
-
- #define flags_1 flags_
-
- struct {
- doublereal tcstar[2], tcstop[2], tcincr[2];
- integer icvflg, itcelm[2], kssop, kinel, kidin, kovar, kidout;
- } dc_;
-
- #define dc_1 dc_
-
- struct {
- doublereal value[200000];
- } blank_;
-
- #define blank_1 blank_
-
- /* Table of constant values */
-
- static integer c__0 = 0;
- static integer c__1 = 1;
- static integer c__7 = 7;
-
- /*< subroutine sencal >*/
- /* Subroutine */ int sencal_()
- {
- /* Initialized data */
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_125 = { {'i', 's', 'e', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsise (*(doublereal *)&equiv_125)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_126 = { {'b', 'r', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsbr (*(doublereal *)&equiv_126)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_127 = { {'i', 's', 'c', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsisc (*(doublereal *)&equiv_127)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_128 = { {'n', 'e', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsne (*(doublereal *)&equiv_128)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_129 = { {'n', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsnc (*(doublereal *)&equiv_129)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_130 = { {'i', 'k', 'f', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsik (*(doublereal *)&equiv_130)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_131 = { {'i', 'k', 'r', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsikr (*(doublereal *)&equiv_131)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_132 = { {'v', 'a', 'f', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsva (*(doublereal *)&equiv_132)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_133 = { {'j', 's', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsjs (*(doublereal *)&equiv_133)
-
- static struct {
- char e_1[32];
- doublereal e_2;
- } equiv_134 = { {'d', 'c', ' ', 's', 'e', 'n', 's', 'i', 't', 'i', 'v'
- , 'i', 't', 'y', ' ', 'a', 'n', 'a', 'l', 'y', 's', 'i', 's',
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define sentit ((doublereal *)&equiv_134)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_135 = { {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ablnk (*(doublereal *)&equiv_135)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_136 = { {'r', 's', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsrs (*(doublereal *)&equiv_136)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_137 = { {'i', 's', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsis (*(doublereal *)&equiv_137)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_138 = { {'n', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsn (*(doublereal *)&equiv_138)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_139 = { {'r', 'b', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsrb (*(doublereal *)&equiv_139)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_140 = { {'r', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsrc (*(doublereal *)&equiv_140)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_141 = { {'r', 'e', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsre (*(doublereal *)&equiv_141)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_142 = { {'b', 'f', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsbf (*(doublereal *)&equiv_142)
-
-
- /* Format strings */
- static char fmt_36[] = "(\0020dc sensitivities of output \002,5a8)";
- static char fmt_41[] = "(\0020\002,8x,\002element\002,9x,\002element\002\
- ,7x,\002element\002,7x,\002normalized\002/10x,\002name\002,12x,\002value\002\
- ,6x,\002sensitivity sensitivity\002/35x,\002 (volts/unit) (volts/percent\
- )\002/)";
- static char fmt_42[] = "(\0020\002,8x,\002element\002,9x,\002element\002\
- ,7x,\002element\002,7x,\002normalized\002/10x,\002name\002,12x,\002value\002\
- ,6x,\002sensitivity sensitivity\002/35x,\002 (amps/unit) (amps/percent\
- )\002/)";
- static char fmt_101[] = "(10x,a8,4x,1pd10.3,5x,d10.3,5x,d10.3)";
- static char fmt_181[] = "(1x,a8)";
- static char fmt_186[] = "(10x,a8,5x,\0020.\002,13x,\0020.\002,13x,\0020\
- .\002)";
-
- /* System generated locals */
- integer i_1, i_2;
-
- /* Builtin functions */
- integer s_wsfe(), do_fio(), e_wsfe();
- double exp(), sqrt();
-
- /* Local variables */
- static doublereal cbcn, cben, area, vabc, gben, vabe, vace, evbc, gbcn,
- evbe;
- static integer locm;
- static doublereal csat;
- static integer locs;
- extern /* Subroutine */ int asol_();
- static integer ipos;
- extern /* Subroutine */ int move_();
- static integer locv;
- static doublereal sens, type;
- static integer loct;
- static doublereal oikr;
- static integer node1, node2, node3, node4, node5, node6;
- extern /* Subroutine */ int zero8_();
- static integer j, n, iptro;
- extern /* Subroutine */ int title_();
- static integer jstop;
- static doublereal sensn;
- static integer iptrv;
- static doublereal evben, evbcn, q1, q2, sqarg, alsvb, bf, qb, br, va, vb;
- extern /* Subroutine */ int dcdcmp_();
- static doublereal xn;
- #define nodplc ((integer *)&blank_1)
- #define cvalue ((complex *)&blank_1)
- static doublereal string[5];
- static integer ioutyp, ivolts, noposo, nonego;
- extern /* Subroutine */ int outnam_();
- static integer loc;
- static doublereal vbe, val, oik, ova, ovb;
- static integer ise, isc;
- static doublereal xne, xnc, vtc, vte, vbc, cbe, gbe, cbc, gbc, dqb, dq1,
- dq2;
-
- /* Fortran I/O blocks */
- static cilist io__32 = { 0, 0, 0, fmt_36, 0 };
- static cilist io__34 = { 0, 0, 0, fmt_41, 0 };
- static cilist io__35 = { 0, 0, 0, fmt_42, 0 };
- static cilist io__43 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__45 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__46 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__47 = { 0, 0, 0, fmt_181, 0 };
- static cilist io__51 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__52 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__59 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__60 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__61 = { 0, 0, 0, fmt_181, 0 };
- static cilist io__67 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__68 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__69 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__70 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__71 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__72 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__105 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__106 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__107 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__108 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__109 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__110 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__111 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__112 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__113 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__114 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__115 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__116 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__117 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__118 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__120 = { 0, 0, 0, fmt_101, 0 };
- static cilist io__121 = { 0, 0, 0, fmt_186, 0 };
- static cilist io__124 = { 0, 0, 0, fmt_101, 0 };
-
-
- /*< implicit double precision (a-h,o-z) >*/
-
- /* this routine computes the dc sensitivities of circuit elements */
- /* with respect to user specified outputs. */
-
- /* spice version 2g.6 sccsid=tabinf 3/15/83 */
- /*< common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem, >*/
- /*< 1 isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize, >*/
- /*< 2 junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr, >*/
- /*< 3 nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1, >*/
- /*< 4 lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd, >*/
- /*< 5 imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval, >*/
- /*< 6 loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt, >*/
- /*< 7 irowno,jcolno,nttbr,nttar,lvntmp >*/
- /* spice version 2g.6 sccsid=cirdat 3/15/83 */
- /*< common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop, >*/
- /*< 1 nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc >*/
- /* spice version 2g.6 sccsid=status 3/15/83 */
- /*< common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet, >*/
- /*< 1 xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon, >*/
- /*< 2 iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile >*/
- /* spice version 2g.6 sccsid=miscel 3/15/83 */
- /*< common /miscel/ atime,aprog(3),adate,atitle(10),defl,defw,defad, >*/
- /*< 1 defas,rstats(50),iwidth,lwidth,nopage >*/
- /* spice version 2g.6 sccsid=flags 3/15/83 */
- /*< common /flags/ iprnta,iprntl,iprntm,iprntn,iprnto,limtim,limpts, >*/
- /*< 1 lvlcod,lvltim,itl1,itl2,itl3,itl4,itl5,itl6,igoof,nogo,keof >*/
- /* spice version 2g.6 sccsid=dc 3/15/83 */
- /*< common /dc/ tcstar(2),tcstop(2),tcincr(2),icvflg,itcelm(2),kssop, >*/
- /*< 1 kinel,kidin,kovar,kidout >*/
- /* spice version 2g.6 sccsid=blank 3/15/83 */
- /*< common /blank/ value(200000) >*/
- /*< integer nodplc(64) >*/
- /*< complex cvalue(32) >*/
- /*< equivalence (value(1),nodplc(1),cvalue(1)) >*/
-
-
- /*< dimension string(5),sentit(4) >*/
- /*< data alsrs,alsis,alsn,alsrb,alsrc,alsre / 2hrs,2his,1hn,2hrb,2hrc, >*/
- /*< 1 2hre / >*/
- /*< data alsbf,alsise,alsbr,alsisc,alsne,alsnc,alsik,alsikr,alsva,alsv >*/
- /*< 1 / 2hbf,3hise,2hbr,3hisc,2hne,2hnc,3hikf,3hikr,3hvaf,3hvar/ >*/
- /*< data alsjs /2hjs/ >*/
- /*< data sentit / 8hdc sensi, 8htivity a, 8hnalysis , 8h / >*/
- /*< data ablnk / 1h / >*/
-
-
- /*< if (kinel.ne.0) go to 8 >*/
- if (dc_1.kinel != 0) {
- goto L8;
- }
- /*< 4 call dcdcmp >*/
- /* L4: */
- dcdcmp_();
-
-
- /*< 8 do 1000 n=1,nsens >*/
- L8:
- i_1 = tabinf_1.nsens;
- for (n = 1; n <= i_1; ++n) {
-
- /* prepare adjoint excitation vector */
-
- /*< call zero8(value(lvn+1),nstop) >*/
- zero8_(&blank_1.value[tabinf_1.lvn], &cirdat_1.nstop);
- /*< locs=nodplc(isens+n) >*/
- locs = nodplc[tabinf_1.isens + n - 1];
- /*< ioutyp=nodplc(locs+5) >*/
- ioutyp = nodplc[locs + 4];
- /*< if (ioutyp.ne.0) go to 10 >*/
- if (ioutyp != 0) {
- goto L10;
- }
- /* ... voltage output */
- /*< ivolts=1 >*/
- ivolts = 1;
- /*< noposo=nodplc(locs+2) >*/
- noposo = nodplc[locs + 1];
- /*< nonego=nodplc(locs+3) >*/
- nonego = nodplc[locs + 2];
- /*< value(lvn+noposo)=-1.0d0 >*/
- blank_1.value[tabinf_1.lvn + noposo - 1] = -1.;
- /*< value(lvn+nonego)=+1.0d0 >*/
- blank_1.value[tabinf_1.lvn + nonego - 1] = 1.;
- /*< go to 20 >*/
- goto L20;
- /* ... current output (through voltage source) */
- /*< 10 iptro=nodplc(locs+2) >*/
- L10:
- iptro = nodplc[locs + 1];
- /*< ivolts=0 >*/
- ivolts = 0;
- /*< iptro=nodplc(iptro+6) >*/
- iptro = nodplc[iptro + 5];
- /*< value(lvn+iptro)=-1.0d0 >*/
- blank_1.value[tabinf_1.lvn + iptro - 1] = -1.;
-
- /* obtain adjoint solution by doing forward/backward substitution on
- */
- /* the transpose of the y matrix */
-
- /*< 20 call asol >*/
- L20:
- asol_();
- /*< value(lvn+1)=0.0d0 >*/
- blank_1.value[tabinf_1.lvn] = 0.;
-
- /* real solution in lvnim1; adjoint solution in lvn ... */
-
- /*< call title(0,lwidth,1,sentit) >*/
- title_(&c__0, &miscel_1.lwidth, &c__1, sentit);
- /*< ipos=1 >*/
- ipos = 1;
- /*< call outnam(locs,1,string,ipos) >*/
- outnam_(&locs, &c__1, string, &ipos);
- /*< call move(string,ipos,ablnk,1,7) >*/
- move_(string, &ipos, &ablnk, &c__1, &c__7);
- /*< jstop=(ipos+6)/8 >*/
- jstop = (ipos + 6) / 8;
- /*< write (iofile,36) (string(j),j=1,jstop) >*/
- io__32.ciunit = status_1.iofile;
- s_wsfe(&io__32);
- i_2 = jstop;
- for (j = 1; j <= i_2; ++j) {
- do_fio(&c__1, (char *)&string[j - 1], (ftnlen)sizeof(doublereal));
-
- }
- e_wsfe();
- /*< 36 format('0dc sensitivities of output ',5a8) >*/
- /*< if(ivolts.ne.0) write (iofile,41) >*/
- if (ivolts != 0) {
- io__34.ciunit = status_1.iofile;
- s_wsfe(&io__34);
- e_wsfe();
- }
- /*< if(ivolts.eq.0) write(iofile,42) >*/
- if (ivolts == 0) {
- io__35.ciunit = status_1.iofile;
- s_wsfe(&io__35);
- e_wsfe();
- }
- /*< 41 format(1h0,8x,'element',9x,'element',7x,'element',7x,'normalized'/ >*/
- /*< 1 10x,'name',12x,'value',6x,'sensitivity sensitivity'/35x, >*/
- /*< 2 ' (volts/unit) (volts/percent)'/) >*/
- /*< 42 format(1h0,8x,'element',9x,'element',7x,'element',7x,'normalized'/ >*/
- /*< 1 10x,'name',12x,'value',6x,'sensitivity sensitivity'/35x, >*/
- /*< 2 ' (amps/unit) (amps/percent)'/) >*/
-
- /* resistors */
-
- /*< loc=locate(1) >*/
- loc = cirdat_1.locate[0];
- /*< 100 if ((loc.eq.0).or.(nodplc(loc+8).ne.0)) go to 110 >*/
- L100:
- if (loc == 0 || nodplc[loc + 7] != 0) {
- goto L110;
- }
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< val=1.0d0/value(locv+1) >*/
- val = 1. / blank_1.value[locv];
- /*< sens=-(value(lvnim1+node1)-value(lvnim1+node2))* >*/
- /*< 1 (value(lvn +node1)-value(lvn +node2))/(val*val) >*/
- sens = -(blank_1.value[tabinf_1.lvnim1 + node1 - 1] - blank_1.value[
- tabinf_1.lvnim1 + node2 - 1]) * (blank_1.value[tabinf_1.lvn +
- node1 - 1] - blank_1.value[tabinf_1.lvn + node2 - 1]) / (val *
- val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) value(locv),val,sens,sensn >*/
- io__43.ciunit = status_1.iofile;
- s_wsfe(&io__43);
- do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
- doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 101 format(10x,a8,4x,1pd10.3,5x,d10.3,5x,d10.3) >*/
- /*< 105 loc=nodplc(loc) >*/
- /* L105: */
- loc = nodplc[loc - 1];
- /*< go to 100 >*/
- goto L100;
-
- /* voltage sources */
-
- /*< 110 loc=locate(9) >*/
- L110:
- loc = cirdat_1.locate[8];
- /*< 140 if ((loc.eq.0).or.(nodplc(loc+11).ne.0)) go to 150 >*/
- L140:
- if (loc == 0 || nodplc[loc + 10] != 0) {
- goto L150;
- }
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< val=value(locv+1) >*/
- val = blank_1.value[locv];
- /*< iptrv=nodplc(loc+6) >*/
- iptrv = nodplc[loc + 5];
- /*< sens=-value(lvn+iptrv) >*/
- sens = -blank_1.value[tabinf_1.lvn + iptrv - 1];
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) value(locv),val,sens,sensn >*/
- io__45.ciunit = status_1.iofile;
- s_wsfe(&io__45);
- do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
- doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 145 loc=nodplc(loc) >*/
- /* L145: */
- loc = nodplc[loc - 1];
- /*< go to 140 >*/
- goto L140;
-
- /* current sources */
-
- /*< 150 loc=locate(10) >*/
- L150:
- loc = cirdat_1.locate[9];
- /*< 160 if ((loc.eq.0).or.(nodplc(loc+6).ne.0)) go to 170 >*/
- L160:
- if (loc == 0 || nodplc[loc + 5] != 0) {
- goto L170;
- }
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< val=value(locv+1) >*/
- val = blank_1.value[locv];
- /*< sens=value(lvn+node1)-value(lvn+node2) >*/
- sens = blank_1.value[tabinf_1.lvn + node1 - 1] - blank_1.value[
- tabinf_1.lvn + node2 - 1];
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) value(locv),val,sens,sensn >*/
- io__46.ciunit = status_1.iofile;
- s_wsfe(&io__46);
- do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
- doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 165 loc=nodplc(loc) >*/
- /* L165: */
- loc = nodplc[loc - 1];
- /*< go to 160 >*/
- goto L160;
-
- /* diodes */
-
- /*< 170 loc=locate(11) >*/
- L170:
- loc = cirdat_1.locate[10];
- /*< 180 if ((loc.eq.0).or.(nodplc(loc+16).ne.0)) go to 210 >*/
- L180:
- if (loc == 0 || nodplc[loc + 15] != 0) {
- goto L210;
- }
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< write (iofile,181) value(locv) >*/
- io__47.ciunit = status_1.iofile;
- s_wsfe(&io__47);
- do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
- doublereal));
- e_wsfe();
- /*< 181 format(1x,a8) >*/
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< locm=nodplc(loc+5) >*/
- locm = nodplc[loc + 4];
- /*< locm=nodplc(locm+1) >*/
- locm = nodplc[locm];
- /*< area=value(locv+1) >*/
- area = blank_1.value[locv];
-
- /* series resistance (rs) */
-
- /*< val=value(locm+2)*area >*/
- val = blank_1.value[locm + 1] * area;
- /*< if (val.ne.0.0d0) go to 190 >*/
- if (val != 0.) {
- goto L190;
- }
- /*< write (iofile,186) alsrs >*/
- io__51.ciunit = status_1.iofile;
- s_wsfe(&io__51);
- do_fio(&c__1, (char *)&alsrs, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 186 format(10x,a8,5x,2h0.,13x,2h0.,13x,2h0.) >*/
- /*< go to 200 >*/
- goto L200;
- /*< 190 val=1.0d0/val >*/
- L190:
- val = 1. / val;
- /*< sens=-(value(lvnim1+node1)-value(lvnim1+node3))* >*/
- /*< 1 (value(lvn +node1)-value(lvn +node3))/(val*val) >*/
- sens = -(blank_1.value[tabinf_1.lvnim1 + node1 - 1] - blank_1.value[
- tabinf_1.lvnim1 + node3 - 1]) * (blank_1.value[tabinf_1.lvn +
- node1 - 1] - blank_1.value[tabinf_1.lvn + node3 - 1]) / (val *
- val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) alsrs,val,sens,sensn >*/
- io__52.ciunit = status_1.iofile;
- s_wsfe(&io__52);
- do_fio(&c__1, (char *)&alsrs, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
-
- /* intrinsic parameters */
-
- /*< 200 csat=value(locm+1)*area >*/
- L200:
- csat = blank_1.value[locm] * area;
- /*< xn=value(locm+3) >*/
- xn = blank_1.value[locm + 2];
- /*< vbe=value(lvnim1+node3)-value(lvnim1+node2) >*/
- vbe = blank_1.value[tabinf_1.lvnim1 + node3 - 1] - blank_1.value[
- tabinf_1.lvnim1 + node2 - 1];
- /*< vte=xn*vt >*/
- vte = xn * status_1.vt;
- /*< evbe=dexp(vbe/vte) >*/
- evbe = exp(vbe / vte);
- /*< vabe=value(lvn+node3)-value(lvn+node2) >*/
- vabe = blank_1.value[tabinf_1.lvn + node3 - 1] - blank_1.value[
- tabinf_1.lvn + node2 - 1];
-
- /* saturation current (is) */
-
- /*< sens=vabe*(evbe-1.0d0) >*/
- sens = vabe * (evbe - 1.);
- /*< sensn=csat*sens/100.0d0 >*/
- sensn = csat * sens / 100.;
- /*< write (iofile,101) alsis,csat,sens,sensn >*/
- io__59.ciunit = status_1.iofile;
- s_wsfe(&io__59);
- do_fio(&c__1, (char *)&alsis, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&csat, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
-
- /* ideality factor (n) */
-
- /*< sens=-vabe*(csat/xn)*(vbe/vte)*evbe >*/
- sens = -vabe * (csat / xn) * (vbe / vte) * evbe;
- /*< if (dabs(sens).lt.1.0d-30) sens=0.0d0 >*/
- if (abs(sens) < 1e-30) {
- sens = 0.;
- }
- /*< sensn=xn*sens/100.0d0 >*/
- sensn = xn * sens / 100.;
- /*< write (iofile,101) alsn,xn,sens,sensn >*/
- io__60.ciunit = status_1.iofile;
- s_wsfe(&io__60);
- do_fio(&c__1, (char *)&alsn, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&xn, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 205 loc=nodplc(loc) >*/
- /* L205: */
- loc = nodplc[loc - 1];
- /*< go to 180 >*/
- goto L180;
-
- /* bipolar junction transistors */
-
- /*< 210 loc=locate(12) >*/
- L210:
- loc = cirdat_1.locate[11];
- /*< 220 if ((loc.eq.0).or.(nodplc(loc+36).ne.0)) go to 1000 >*/
- L220:
- if (loc == 0 || nodplc[loc + 35] != 0) {
- goto L1000;
- }
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< write (iofile,181) value(locv) >*/
- io__61.ciunit = status_1.iofile;
- s_wsfe(&io__61);
- do_fio(&c__1, (char *)&blank_1.value[locv - 1], (ftnlen)sizeof(
- doublereal));
- e_wsfe();
- /*< node1=nodplc(loc+2) >*/
- node1 = nodplc[loc + 1];
- /*< node2=nodplc(loc+3) >*/
- node2 = nodplc[loc + 2];
- /*< node3=nodplc(loc+4) >*/
- node3 = nodplc[loc + 3];
- /*< node4=nodplc(loc+5) >*/
- node4 = nodplc[loc + 4];
- /*< node5=nodplc(loc+6) >*/
- node5 = nodplc[loc + 5];
- /*< node6=nodplc(loc+7) >*/
- node6 = nodplc[loc + 6];
- /*< locm=nodplc(loc+8) >*/
- locm = nodplc[loc + 7];
- /*< type=nodplc(locm+2) >*/
- type = (doublereal) nodplc[locm + 1];
- /*< locm=nodplc(locm+1) >*/
- locm = nodplc[locm];
- /*< loct=lx0+nodplc(loc+22) >*/
- loct = tabinf_1.lx0 + nodplc[loc + 21];
- /*< area=value(locv+1) >*/
- area = blank_1.value[locv];
-
- /* base resistance (rb) */
-
- /*< val=value(loct+16) >*/
- val = blank_1.value[loct + 15];
- /*< if (val.ne.0.0d0) go to 230 >*/
- if (val != 0.) {
- goto L230;
- }
- /*< write (iofile,186) alsrb >*/
- io__67.ciunit = status_1.iofile;
- s_wsfe(&io__67);
- do_fio(&c__1, (char *)&alsrb, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 240 >*/
- goto L240;
- /*< 230 val=1.0d0/val >*/
- L230:
- val = 1. / val;
- /*< sens=-(value(lvnim1+node2)-value(lvnim1+node5))* >*/
- /*< 1 (value(lvn +node2)-value(lvn +node5))/(val*val) >*/
- sens = -(blank_1.value[tabinf_1.lvnim1 + node2 - 1] - blank_1.value[
- tabinf_1.lvnim1 + node5 - 1]) * (blank_1.value[tabinf_1.lvn +
- node2 - 1] - blank_1.value[tabinf_1.lvn + node5 - 1]) / (val *
- val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) alsrb,val,sens,sensn >*/
- io__68.ciunit = status_1.iofile;
- s_wsfe(&io__68);
- do_fio(&c__1, (char *)&alsrb, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
-
- /* collector resistance (rc) */
-
- /*< 240 val=value(locm+20)*area >*/
- L240:
- val = blank_1.value[locm + 19] * area;
- /*< if (val.ne.0.0d0) go to 250 >*/
- if (val != 0.) {
- goto L250;
- }
- /*< write (iofile,186) alsrc >*/
- io__69.ciunit = status_1.iofile;
- s_wsfe(&io__69);
- do_fio(&c__1, (char *)&alsrc, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 260 >*/
- goto L260;
- /*< 250 val=1.0d0/val >*/
- L250:
- val = 1. / val;
- /*< sens=-(value(lvnim1+node1)-value(lvnim1+node4))* >*/
- /*< 1 (value(lvn +node1)-value(lvn +node4))/(val*val) >*/
- sens = -(blank_1.value[tabinf_1.lvnim1 + node1 - 1] - blank_1.value[
- tabinf_1.lvnim1 + node4 - 1]) * (blank_1.value[tabinf_1.lvn +
- node1 - 1] - blank_1.value[tabinf_1.lvn + node4 - 1]) / (val *
- val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) alsrc,val,sens,sensn >*/
- io__70.ciunit = status_1.iofile;
- s_wsfe(&io__70);
- do_fio(&c__1, (char *)&alsrc, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
-
- /* emitter resistance (re) */
-
- /*< 260 val=value(locm+19)*area >*/
- L260:
- val = blank_1.value[locm + 18] * area;
- /*< if (val.ne.0.0d0) go to 270 >*/
- if (val != 0.) {
- goto L270;
- }
- /*< write (iofile,186) alsre >*/
- io__71.ciunit = status_1.iofile;
- s_wsfe(&io__71);
- do_fio(&c__1, (char *)&alsre, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 280 >*/
- goto L280;
- /*< 270 val=1.0d0/val >*/
- L270:
- val = 1. / val;
- /*< sens=-(value(lvnim1+node3)-value(lvnim1+node6))* >*/
- /*< 1 (value(lvn +node3)-value(lvn +node6))/(val*val) >*/
- sens = -(blank_1.value[tabinf_1.lvnim1 + node3 - 1] - blank_1.value[
- tabinf_1.lvnim1 + node6 - 1]) * (blank_1.value[tabinf_1.lvn +
- node3 - 1] - blank_1.value[tabinf_1.lvn + node6 - 1]) / (val *
- val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) alsre,val,sens,sensn >*/
- io__72.ciunit = status_1.iofile;
- s_wsfe(&io__72);
- do_fio(&c__1, (char *)&alsre, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
-
- /* intrinsic parameters */
-
- /*< 280 bf=value(locm+2) >*/
- L280:
- bf = blank_1.value[locm + 1];
- /*< br=value(locm+8) >*/
- br = blank_1.value[locm + 7];
- /*< csat=value(locm+1)*area >*/
- csat = blank_1.value[locm] * area;
- /*< ova=value(locm+4) >*/
- ova = blank_1.value[locm + 3];
- /*< ovb=value(locm+10) >*/
- ovb = blank_1.value[locm + 9];
- /*< oik=value(locm+5)/area >*/
- oik = blank_1.value[locm + 4] / area;
- /*< ise=value(locm+6)*area >*/
- ise = (integer) (blank_1.value[locm + 5] * area);
- /*< xne=value(locm+7) >*/
- xne = blank_1.value[locm + 6];
- /*< vte=xne*vt >*/
- vte = xne * status_1.vt;
- /*< oikr=value(locm+11)/area >*/
- oikr = blank_1.value[locm + 10] / area;
- /*< isc=value(locm+12)*area >*/
- isc = (integer) (blank_1.value[locm + 11] * area);
- /*< xnc=value(locm+13) >*/
- xnc = blank_1.value[locm + 12];
- /*< vtc=xnc*vt >*/
- vtc = xnc * status_1.vt;
- /*< vbe=type*(value(lvnim1+node5)-value(lvnim1+node6)) >*/
- vbe = type * (blank_1.value[tabinf_1.lvnim1 + node5 - 1] -
- blank_1.value[tabinf_1.lvnim1 + node6 - 1]);
- /*< vbc=type*(value(lvnim1+node5)-value(lvnim1+node4)) >*/
- vbc = type * (blank_1.value[tabinf_1.lvnim1 + node5 - 1] -
- blank_1.value[tabinf_1.lvnim1 + node4 - 1]);
- /*< vabe=type*(value(lvn+node5)-value(lvn+node6)) >*/
- vabe = type * (blank_1.value[tabinf_1.lvn + node5 - 1] -
- blank_1.value[tabinf_1.lvn + node6 - 1]);
- /*< vabc=type*(value(lvn+node5)-value(lvn+node4)) >*/
- vabc = type * (blank_1.value[tabinf_1.lvn + node5 - 1] -
- blank_1.value[tabinf_1.lvn + node4 - 1]);
- /*< vace=vabe-vabc >*/
- vace = vabe - vabc;
- /*< if (vbe.le.-vt) go to 320 >*/
- if (vbe <= -status_1.vt) {
- goto L320;
- }
- /*< evbe=dexp(vbe/vt/value(locm+3)) >*/
- evbe = exp(vbe / status_1.vt / blank_1.value[locm + 2]);
- /*< cbe=csat*(evbe-1.0d0) >*/
- cbe = csat * (evbe - 1.);
- /*< gbe=csat*evbe/vt/value(locm+3) >*/
- gbe = csat * evbe / status_1.vt / blank_1.value[locm + 2];
- /*< if (ise.ne.0.0d0) go to 310 >*/
- if ((doublereal) ise != 0.) {
- goto L310;
- }
- /*< cben=0.0d0 >*/
- cben = 0.;
- /*< gben=0.0d0 >*/
- gben = 0.;
- /*< go to 350 >*/
- goto L350;
- /*< 310 evben=dexp(vbe/vte) >*/
- L310:
- evben = exp(vbe / vte);
- /*< cben=ise *(evben-1.0d0) >*/
- cben = ise * (evben - 1.);
- /*< gben=ise *evben/vte >*/
- gben = ise * evben / vte;
- /*< go to 350 >*/
- goto L350;
- /*< 320 gbe=-csat/vbe >*/
- L320:
- gbe = -csat / vbe;
- /*< cbe=gbe*vbe >*/
- cbe = gbe * vbe;
- /*< gben=-ise/vbe >*/
- gben = -ise / vbe;
- /*< cben=gben*vbe >*/
- cben = gben * vbe;
- /*< 350 if (vbc.le.-vt) go to 370 >*/
- L350:
- if (vbc <= -status_1.vt) {
- goto L370;
- }
- /*< evbc=dexp(vbc/vt/value(locm+9)) >*/
- evbc = exp(vbc / status_1.vt / blank_1.value[locm + 8]);
- /*< cbc=csat*(evbc-1.0d0) >*/
- cbc = csat * (evbc - 1.);
- /*< gbc=csat*evbc/vt/value(locm+9) >*/
- gbc = csat * evbc / status_1.vt / blank_1.value[locm + 8];
- /*< if (isc.ne.0.0d0) go to 360 >*/
- if ((doublereal) isc != 0.) {
- goto L360;
- }
- /*< cbcn=0.0d0 >*/
- cbcn = 0.;
- /*< gbcn=0.0d0 >*/
- gbcn = 0.;
- /*< go to 400 >*/
- goto L400;
- /*< 360 evbcn=dexp(vbc/vtc) >*/
- L360:
- evbcn = exp(vbc / vtc);
- /*< cbcn=isc *(evbcn-1.0d0) >*/
- cbcn = isc * (evbcn - 1.);
- /*< gbcn=isc *evbcn/vtc >*/
- gbcn = isc * evbcn / vtc;
- /*< go to 400 >*/
- goto L400;
- /*< 370 gbc=-csat/vbc >*/
- L370:
- gbc = -csat / vbc;
- /*< cbc=gbc*vbc >*/
- cbc = gbc * vbc;
- /*< gbcn=-isc/vbc >*/
- gbcn = -isc / vbc;
- /*< cbcn=gbcn*vbc >*/
- cbcn = gbcn * vbc;
- /*< 400 q1=1.0d0/(1.0d0-ova*vbc-ovb*vbe) >*/
- L400:
- q1 = 1. / (1. - ova * vbc - ovb * vbe);
- /*< q2=oik*cbe+oikr*cbc >*/
- q2 = oik * cbe + oikr * cbc;
- /*< sqarg=dsqrt(1.0d0+4.0d0*q2) >*/
- sqarg = sqrt(q2 * 4. + 1.);
- /*< qb=q1*(1.0d0+sqarg)/2.0d0 >*/
- qb = q1 * (sqarg + 1.) / 2.;
- /*< dqb=(cbe-cbc)/(qb*qb) >*/
- dqb = (cbe - cbc) / (qb * qb);
- /*< sqarg=dsqrt(1.0d0+4.0d0*q2) >*/
- sqarg = sqrt(q2 * 4. + 1.);
- /*< dq1=dqb*(1.0d0+sqarg)/2.0d0 >*/
- dq1 = dqb * (sqarg + 1.) / 2.;
- /*< dq2=q1*dqb/sqarg >*/
- dq2 = q1 * dqb / sqarg;
-
- /* compute sensitivities */
-
- /* ... bf */
- /*< sens=-vabe*cbe/bf/bf >*/
- sens = -vabe * cbe / bf / bf;
- /*< sensn=bf*sens/100.0d0 >*/
- sensn = bf * sens / 100.;
- /*< write (iofile,101) alsbf,bf,sens,sensn >*/
- io__105.ciunit = status_1.iofile;
- s_wsfe(&io__105);
- do_fio(&c__1, (char *)&alsbf, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&bf, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... ise */
- /*< if (ise.ne.0.0d0) go to 430 >*/
- if ((doublereal) ise != 0.) {
- goto L430;
- }
- /*< write (iofile,186) alsise >*/
- io__106.ciunit = status_1.iofile;
- s_wsfe(&io__106);
- do_fio(&c__1, (char *)&alsise, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 440 >*/
- goto L440;
- /*< 430 sens=vabe*cben/ise >*/
- L430:
- sens = vabe * cben / ise;
- /*< sensn=ise*sens/100.0d0 >*/
- sensn = ise * sens / 100.;
- /*< write (iofile,101) alsise,ise,sens,sensn >*/
- io__107.ciunit = status_1.iofile;
- s_wsfe(&io__107);
- do_fio(&c__1, (char *)&alsise, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&ise, (ftnlen)sizeof(integer));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... br */
- /*< 440 sens=-vabc*cbc/br/br >*/
- L440:
- sens = -vabc * cbc / br / br;
- /*< sensn=br*sens/100.0d0 >*/
- sensn = br * sens / 100.;
- /*< write (iofile,101) alsbr,br,sens,sensn >*/
- io__108.ciunit = status_1.iofile;
- s_wsfe(&io__108);
- do_fio(&c__1, (char *)&alsbr, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&br, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... isc */
- /*< if (isc.ne.0.0d0) go to 450 >*/
- if ((doublereal) isc != 0.) {
- goto L450;
- }
- /*< write (iofile,186) alsisc >*/
- io__109.ciunit = status_1.iofile;
- s_wsfe(&io__109);
- do_fio(&c__1, (char *)&alsisc, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 460 >*/
- goto L460;
- /*< 450 sens=vabc*cbcn/isc >*/
- L450:
- sens = vabc * cbcn / isc;
- /*< sensn=isc*sens/100.0d0 >*/
- sensn = isc * sens / 100.;
- /*< write (iofile,101) alsisc,isc,sens,sensn >*/
- io__110.ciunit = status_1.iofile;
- s_wsfe(&io__110);
- do_fio(&c__1, (char *)&alsisc, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&isc, (ftnlen)sizeof(integer));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... is */
- /*< 460 sens=(vabe*(cbe/bf)+vabc*(cbc/br) >*/
- /*< 1 +vace*(dqb*qb-dq2*q2))/csat >*/
- L460:
- sens = (vabe * (cbe / bf) + vabc * (cbc / br) + vace * (dqb * qb -
- dq2 * q2)) / csat;
- /*< sensn=csat*sens/100.0d0 >*/
- sensn = csat * sens / 100.;
- /*< write (iofile,101) alsjs,csat,sens,sensn >*/
- io__111.ciunit = status_1.iofile;
- s_wsfe(&io__111);
- do_fio(&c__1, (char *)&alsjs, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&csat, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... ne */
- /*< sens=-vabe*gben*vbe/xne >*/
- sens = -vabe * gben * vbe / xne;
- /*< sensn=xne*sens/100.0d0 >*/
- sensn = xne * sens / 100.;
- /*< write (iofile,101) alsne,xne,sens,sensn >*/
- io__112.ciunit = status_1.iofile;
- s_wsfe(&io__112);
- do_fio(&c__1, (char *)&alsne, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&xne, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... nc */
- /*< sens=-vabc*gbcn*vbc/xnc >*/
- sens = -vabc * gbcn * vbc / xnc;
- /*< sensn=xnc*sens/100.0d0 >*/
- sensn = xnc * sens / 100.;
- /*< write (iofile,101) alsnc,xnc,sens,sensn >*/
- io__113.ciunit = status_1.iofile;
- s_wsfe(&io__113);
- do_fio(&c__1, (char *)&alsnc, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&xnc, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... ik */
- /*< if (oik.ne.0.0d0) go to 470 >*/
- if (oik != 0.) {
- goto L470;
- }
- /*< write (iofile,186) alsik >*/
- io__114.ciunit = status_1.iofile;
- s_wsfe(&io__114);
- do_fio(&c__1, (char *)&alsik, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 480 >*/
- goto L480;
- /*< 470 val=1.0d0/oik >*/
- L470:
- val = 1. / oik;
- /*< sens=vace*dq2*cbe/(val*val) >*/
- sens = vace * dq2 * cbe / (val * val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) alsik,val,sens,sensn >*/
- io__115.ciunit = status_1.iofile;
- s_wsfe(&io__115);
- do_fio(&c__1, (char *)&alsik, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... ikr */
- /*< 480 if (oikr.ne.0.0d0) go to 490 >*/
- L480:
- if (oikr != 0.) {
- goto L490;
- }
- /*< write (iofile,186) alsikr >*/
- io__116.ciunit = status_1.iofile;
- s_wsfe(&io__116);
- do_fio(&c__1, (char *)&alsikr, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 500 >*/
- goto L500;
- /*< 490 val=1.0d0/oikr >*/
- L490:
- val = 1. / oikr;
- /*< sens=vace*dq2*cbc/(val*val) >*/
- sens = vace * dq2 * cbc / (val * val);
- /*< sensn=val*sens/100.0d0 >*/
- sensn = val * sens / 100.;
- /*< write (iofile,101) alsikr,val,sens,sensn >*/
- io__117.ciunit = status_1.iofile;
- s_wsfe(&io__117);
- do_fio(&c__1, (char *)&alsikr, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&val, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... va */
- /*< 500 if (ova.ne.0.0d0) go to 510 >*/
- L500:
- if (ova != 0.) {
- goto L510;
- }
- /*< write (iofile,186) alsva >*/
- io__118.ciunit = status_1.iofile;
- s_wsfe(&io__118);
- do_fio(&c__1, (char *)&alsva, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 520 >*/
- goto L520;
- /*< 510 va=1.0d0/ova >*/
- L510:
- va = 1. / ova;
- /*< sens=vace*q1*q1*dq1*vbc/(va*va) >*/
- sens = vace * q1 * q1 * dq1 * vbc / (va * va);
- /*< sensn=va*sens/100.0d0 >*/
- sensn = va * sens / 100.;
- /*< write (iofile,101) alsva,va,sens,sensn >*/
- io__120.ciunit = status_1.iofile;
- s_wsfe(&io__120);
- do_fio(&c__1, (char *)&alsva, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&va, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /* ... vb */
- /*< 520 if (ovb.ne.0.0d0) go to 530 >*/
- L520:
- if (ovb != 0.) {
- goto L530;
- }
- /*< write (iofile,186) alsvb >*/
- io__121.ciunit = status_1.iofile;
- s_wsfe(&io__121);
- do_fio(&c__1, (char *)&alsvb, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< go to 540 >*/
- goto L540;
- /*< 530 vb=1.0d0/ovb >*/
- L530:
- vb = 1. / ovb;
- /*< sens=vace*q1*q1*dq1*vbe/(vb*vb) >*/
- sens = vace * q1 * q1 * dq1 * vbe / (vb * vb);
- /*< sensn=vb*sens/100.0d0 >*/
- sensn = vb * sens / 100.;
- /*< write (iofile,101) alsvb,vb,sens,sensn >*/
- io__124.ciunit = status_1.iofile;
- s_wsfe(&io__124);
- do_fio(&c__1, (char *)&alsvb, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&vb, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sens, (ftnlen)sizeof(doublereal));
- do_fio(&c__1, (char *)&sensn, (ftnlen)sizeof(doublereal));
- e_wsfe();
-
-
- /*< 540 loc=nodplc(loc) >*/
- L540:
- loc = nodplc[loc - 1];
- /*< go to 220 >*/
- goto L220;
-
- /* finished */
-
- /*< 1000 continue >*/
- L1000:
- ;}
- /*< return >*/
- return 0;
- /*< end >*/
- } /* sencal_ */
-
- #undef cvalue
- #undef nodplc
- #undef alsbf
- #undef alsre
- #undef alsrc
- #undef alsrb
- #undef alsn
- #undef alsis
- #undef alsrs
- #undef ablnk
- #undef sentit
- #undef alsjs
- #undef alsva
- #undef alsikr
- #undef alsik
- #undef alsnc
- #undef alsne
- #undef alsisc
- #undef alsbr
- #undef alsise
-
-
-